package com.example.weather;

import android.util.Xml;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import org.json.JSONArray;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class WeatherService {

    //解析xml文件 返回天气信息

//    public static List<WeatherInfo> getInfoFromXml(InputStream is) throws XmlPullParserException, IOException {
//        List<WeatherInfo>  weatherInfos = null;
//        WeatherInfo weatherInfo = null;
//        //获取pull解析器
//        XmlPullParser parser = Xml.newPullParser();
//        //初始化解析器 告诉解析器要解析的xml文件
//        parser.setInput(is,"utf-8");
//        //得到当前事件类型
//        int type = parser.getEventType();
//        //不到文件结尾 就一直解析
//        while (type!=XmlPullParser.END_DOCUMENT){
//            //判断具体解析的是开始标签还是结束标签
//            switch (type){
//                case XmlPullParser.START_TAG:
//                    if(parser.getName().equals("infos")){
//                        weatherInfos = new ArrayList<WeatherInfo>();
//                    }else if(parser.getName().equals("city")){
//                        weatherInfo = new WeatherInfo();
//                        //获取city标签的第一个属性值 即id
//                        String idStr = parser.getAttributeValue(0);
//                        //将id赋给weatherInfo对象
//                        weatherInfo.setId(idStr);
//                    }else if(parser.getName().equals("temp")){
//                        String temp = parser.nextText();
//                        weatherInfo.setTemp(temp);
//                    }else if(parser.getName().equals("weather")){
//                        String weather = parser.nextText();
//                        weatherInfo.setWeather(weather);
//                    }else if(parser.getName().equals("name")){
//                        String name = parser.nextText();
//                        weatherInfo.setName(name);
//                    }else if(parser.getName().equals("wind")){
//                        String wind = parser.nextText();
//                        weatherInfo.setWind(wind);
//                    }
//                    break;
//
//                case XmlPullParser.END_TAG:
//                    if(parser.getName().equals("city")){
//                        //如果解析到结束标签 就把当前weatherInfo对象加入集合
//                        weatherInfos.add(weatherInfo);
//                    }
//                    break;
//            }
//            type = parser.next();
//
//        }
//        return weatherInfos;
//    }

//    解析json文件 返回天气信息集合
  public static List<WeatherInfo> getInfoFromJson(InputStream is) throws Exception{
        byte[] buffer = new byte[is.available()];
        is.read(buffer);
        String json = new String(buffer,"utf-8");

        //使用gson进行解析
        Gson gson = new Gson();
        Type listType = new TypeToken<List<WeatherInfo>>(){}.getType();
        List<WeatherInfo> weatherInfos = gson.fromJson(json,listType);

        return weatherInfos;
    }

//    使用JSONObject解析




}
